﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using LogicaNegocio;
using Entidades;
namespace PresentacionEscritorio
{
    public partial class frmRegistrarObraSocial : Form
    {
        private GestorBarrio GB = new GestorBarrio();
        private GestorLocalidad GL = new GestorLocalidad();
        private GestorObraSocial GOS = new GestorObraSocial();
        private ObraSocial oOS = new ObraSocial();
        private GestorDomicilio GD = new GestorDomicilio();


        public frmRegistrarObraSocial()
        {
            InitializeComponent();
        }

        private void frmRegistrarObraSocial_Load(object sender, EventArgs e)
        {
            btnAgregarConvenio.Visible = false;
            cargarLocalidad();

        }
        private void cargarLocalidad()
        {
            cmbLocalidad.DataSource = GL.ObtenerTodos();
            cmbLocalidad.ValueMember = "idLocalidad";
            cmbLocalidad.DisplayMember = "nombre";
            cargarBarrios(int.Parse(cmbLocalidad.SelectedValue.ToString()));
        }
        private void cargarBarrios(int localidad)
        {
            cmbBarrio.DataSource = GB.ObtenerTodos(localidad);
            cmbBarrio.ValueMember = "idBarrio";
            cmbBarrio.DisplayMember = "nombre";
        }
        private bool validarDatos()
        {
            bool validacion = true;
            string error = "";

            if (string.IsNullOrEmpty(txtNombreOS.Text))
            {
                validacion = false;
                error += "El Nombre de la Obra social es requerido\r\n";
            }
            if (string.IsNullOrEmpty(txtSiglaOS.Text))
            {
                validacion = false;
                error += "Debe proporcionarse sigla para la Obra Social\r\n";
            }
            if (string.IsNullOrEmpty(txtCuit.Text))
            {
                validacion = false;
                error += "El cuit de la Obra social es requerido\r\n";
            }
            else
            {
                long numero;
                bool resul = long.TryParse(txtCuit.Text, out numero);

                if (!resul)
                {
                    validacion = false;
                    error += "El numero de cuit debe ser unicamente numerico\r\n";
                } if (verificarExistenciaOss() == true)
                {
                    validacion = false;
                    error += "La Obra social ya se encuentra registrada";
                }

            }
            if (string.IsNullOrEmpty(txtTelefono.Text))
            {
                validacion = false;
                error += "El teléfono de la Obra social es requerido\r\n";
            }
            else
            {
                long numero;
                bool resul = long.TryParse(txtTelefono.Text, out numero);

                if (!resul)
                {
                    validacion = false;
                    error += "El teléfono debe ser únicamente numérico\r\n";
                } 

            }

            if (cmbLocalidad.ValueMember == null)
            {
                validacion = false;
                error += "La localidad debe seleccionarse\r\n";
            }

            if (cmbBarrio.ValueMember == null)
            {
                validacion = false;
                error += "El barrio de la Obra social debe seleccionarse\r\n";
            }


            if (string.IsNullOrEmpty(txtCalle.Text))
            {
                validacion = false;
                error += "La Ubicacion de la Obra social es requerido\r\n";

            }


            if (string.IsNullOrEmpty(txtNroCalle.Text))
            {
                validacion = false;
                error += "El numero de la calle es requerido \r\n";
            }
            else
            {
                int numero;
                bool resul = int.TryParse(txtNroCalle.Text, out numero);

                if (!resul)
                {
                    validacion = false;
                    error += "El numero de calle debe ser unicamente numerico\r\n";
                }
            }
            if (string.IsNullOrEmpty(txtSiglaOS.Text))
            {
                validacion = false;
                error += "Especifique las siglas de la ObraSocial \r\n";
            }



            if (error != "")
            {
                MessageBox.Show(error, "Aviso", MessageBoxButtons.OK);
            }
            return validacion;

        }

        private void cmbLocalidad_SelectionChangeCommitted(object sender, EventArgs e)
        {
            cargarBarrios(int.Parse(cmbLocalidad.SelectedValue.ToString()));
        }
        private bool verificarExistenciaOss()
        {
            long cuit = 0;
            cuit = long.Parse(txtCuit.Text);
            if (GOS.ObtenerExistenciaOOSSPorCuit(cuit) == true)
            {
                return true;
            }
            return false;
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            try
            {
                if (validarDatos())
                {
                    //1-Creamos un domicilio con los datos obtenidos.
                    Domicilio oD = new Domicilio();
                    oD.idBarrio = int.Parse(cmbBarrio.SelectedValue.ToString());
                    oD.calle = txtCalle.Text;
                    oD.numero = int.Parse(txtNroCalle.Text);
                    if (!txtCodigoPostal.Text.Equals(""))
                    {
                        oD.codPostal = int.Parse(txtCodigoPostal.Text);
                    }
                    if (!txtDepartamento.Text.Equals(""))
                    {
                        oD.Departamento = txtDepartamento.Text;

                    }
                    if (!txtPiso.Text.Equals(""))
                    {
                        oD.piso = int.Parse(txtPiso.Text);

                    }

                    //2-Creamos El Objeto Obra social y le asignamos los datos.
                    oOS.nombre = txtNombreOS.Text;
                    oOS.cuit = long.Parse(txtCuit.Text);
                    oOS.siglas = txtSiglaOS.Text;
                    if (!string.IsNullOrEmpty(txtDescripcion.Text))
                    {
                        oOS.descripcion = txtDescripcion.Text;
                    }
                    oOS.telefono = long.Parse(txtTelefono.Text);
                    if (!string.IsNullOrEmpty(txtMail.Text))
                    {
                        oOS.mail = txtMail.Text;
                    }
                    //El oID.Domicilio de la OBra social se asigna cuando se registra el domicilio en la BD
                    //La fecha de alta es la fecha actual-Fecha de baja se realiza en el form DarBajaOOSS.

                    oOS.fechaAlta = DateTime.Now;
                    
                    //3-Se registra la Obra social con sus datos.
                    if (GOS.registrarOOSS(oOS, oD) > 0)
                    {
                        MessageBox.Show("La obra social se registró con exito", "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        btnAgregarConvenio.Visible = true;
                    }

                }
            }
            catch (Exception Ex)
            {

                MessageBox.Show(Ex.Message, "Error", MessageBoxButtons.OK);
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            txtNombreOS.Text = "";
            txtSiglaOS.Text = "";
            txtDescripcion.Text = "";
            txtTelefono.Text = "";
            txtMail.Text = "";
            txtCalle.Text = "";
            txtCuit.Text = "";
            txtNroCalle.Text = "";
            txtPiso.Text = "";
            txtDepartamento.Text = "";
            txtCodigoPostal.Text = "";
            cmbBarrio.SelectedIndex = -1;
            cmbLocalidad.SelectedIndex = -1;
        }

        private void btnAddConvenio_Click(object sender, EventArgs e)
        {
            frmRegistrarConvenioOS2 formConvOS = new frmRegistrarConvenioOS2();
            formConvOS.Show();
        }
    }
}
